import UIKit

@available(iOS 2.0, *)
extension QKC where AA :UITableViewCell {
	// Content.  These properties provide direct access to the internal label and image views used by the table view cell.  These should be used instead of the content properties below.
		// default is nil.  image view will be created if necessary.
    @available(iOS 3.0, *)
    open func imageView_qk_g() -> QKC<AA,YY,ZZ, UIImageView? >{
		 self +^ self.value.imageView
	}

		// default is nil.  label will be created if necessary.
    @available(iOS 3.0, *)
    open func textLabel_qk_g() -> QKC<AA,YY,ZZ, UILabel? >{
		 self +^ self.value.textLabel
	}

		// default is nil.  label will be created if necessary (and the current style supports a detail label).
    @available(iOS 3.0, *)
    open func detailTextLabel_qk_g() -> QKC<AA,YY,ZZ, UILabel? >{
		 self +^ self.value.detailTextLabel
	}

	// If you want to customize cells by simply adding additional views, you should add them to the content view so they will be positioned appropriately as the cell transitions into and out of editing mode.
    open func contentView_qk_g() -> QKC<AA,YY,ZZ, UIView >{
		 self +^ self.value.contentView
	}

	// Default is nil for cells in UITableViewStylePlain, and non-nil for UITableViewStyleGrouped. The 'backgroundView' will be added as a subview behind all other views.
    open func backgroundView_qk_s(_ backgroundView:  UIView?) -> QKC<AA,YY,ZZ, UIView?>{
		return link(next: backgroundView).then_QK { $0.value.backgroundView = backgroundView }
	}
    open func backgroundView_qk_g() -> QKC<AA,YY,ZZ, UIView?>{
		 self +^ self.value.backgroundView
	}

	// Default is nil for cells in UITableViewStylePlain, and non-nil for UITableViewStyleGrouped. The 'selectedBackgroundView' will be added as a subview directly above the backgroundView if not nil, or behind all other views. It is added as a subview only when the cell is selected. Calling -setSelected:animated: will cause the 'selectedBackgroundView' to animate in and out with an alpha fade.
    open func selectedBackgroundView_qk_s(_ selectedBackgroundView:  UIView?) -> QKC<AA,YY,ZZ, UIView?>{
		return link(next: selectedBackgroundView).then_QK { $0.value.selectedBackgroundView = selectedBackgroundView }
	}
    open func selectedBackgroundView_qk_g() -> QKC<AA,YY,ZZ, UIView?>{
		 self +^ self.value.selectedBackgroundView
	}

	// If not nil, takes the place of the selectedBackgroundView when using multiple selection.
    @available(iOS 5.0, *)
    open func multipleSelectionBackgroundView_qk_s(_ multipleSelectionBackgroundView:  UIView?) -> QKC<AA,YY,ZZ, UIView?>{
		return link(next: multipleSelectionBackgroundView).then_QK { $0.value.multipleSelectionBackgroundView = multipleSelectionBackgroundView }
	}
    @available(iOS 5.0, *)
    open func multipleSelectionBackgroundView_qk_g() -> QKC<AA,YY,ZZ, UIView?>{
		 self +^ self.value.multipleSelectionBackgroundView
	}

    open func reuseIdentifier_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.reuseIdentifier
	}

		// default is UITableViewCellSelectionStyleDefault.
    open func selectionStyle_qk_s(_ selectionStyle:  UITableViewCell.SelectionStyle ) -> QKC<AA,YY,ZZ, UITableViewCell.SelectionStyle >{
		return link(next: selectionStyle).then_QK { $0.value.selectionStyle = selectionStyle }
	}
    open func selectionStyle_qk_g() -> QKC<AA,YY,ZZ, UITableViewCell.SelectionStyle >{
		 self +^ self.value.selectionStyle
	}

		// set selected state (title, image, background). default is NO. animated is NO
    open func isSelected_qk_s(_ isSelected:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: isSelected).then_QK { $0.value.isSelected = isSelected }
	}
    open func isSelected_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isSelected
	}

		// set highlighted state (title, image, background). default is NO. animated is NO
    open func isHighlighted_qk_s(_ isHighlighted:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: isHighlighted).then_QK { $0.value.isHighlighted = isHighlighted }
	}
    open func isHighlighted_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isHighlighted
	}

		// default is UITableViewCellEditingStyleNone. This is set by UITableView using the delegate's value for cells who customize their appearance accordingly.
    open func editingStyle_qk_g() -> QKC<AA,YY,ZZ, UITableViewCell.EditingStyle >{
		 self +^ self.value.editingStyle
	}

		// default is NO
    open func showsReorderControl_qk_s(_ showsReorderControl:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: showsReorderControl).then_QK { $0.value.showsReorderControl = showsReorderControl }
	}
    open func showsReorderControl_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.showsReorderControl
	}

		// default is YES.  This is unrelated to the indentation level below.
    open func shouldIndentWhileEditing_qk_s(_ shouldIndentWhileEditing:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: shouldIndentWhileEditing).then_QK { $0.value.shouldIndentWhileEditing = shouldIndentWhileEditing }
	}
    open func shouldIndentWhileEditing_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.shouldIndentWhileEditing
	}

		// default is UITableViewCellAccessoryNone. use to set standard type
    open func accessoryType_qk_s(_ accessoryType:  UITableViewCell.AccessoryType ) -> QKC<AA,YY,ZZ, UITableViewCell.AccessoryType >{
		return link(next: accessoryType).then_QK { $0.value.accessoryType = accessoryType }
	}
    open func accessoryType_qk_g() -> QKC<AA,YY,ZZ, UITableViewCell.AccessoryType >{
		 self +^ self.value.accessoryType
	}

		// if set, use custom view. ignore accessoryType. tracks if enabled can calls accessory action
    open func accessoryView_qk_s(_ accessoryView:  UIView? ) -> QKC<AA,YY,ZZ, UIView? >{
		return link(next: accessoryView).then_QK { $0.value.accessoryView = accessoryView }
	}
    open func accessoryView_qk_g() -> QKC<AA,YY,ZZ, UIView? >{
		 self +^ self.value.accessoryView
	}

		// default is UITableViewCellAccessoryNone. use to set standard type
    open func editingAccessoryType_qk_s(_ editingAccessoryType:  UITableViewCell.AccessoryType ) -> QKC<AA,YY,ZZ, UITableViewCell.AccessoryType >{
		return link(next: editingAccessoryType).then_QK { $0.value.editingAccessoryType = editingAccessoryType }
	}
    open func editingAccessoryType_qk_g() -> QKC<AA,YY,ZZ, UITableViewCell.AccessoryType >{
		 self +^ self.value.editingAccessoryType
	}

		// if set, use custom view. ignore editingAccessoryType. tracks if enabled can calls accessory action
    open func editingAccessoryView_qk_s(_ editingAccessoryView:  UIView? ) -> QKC<AA,YY,ZZ, UIView? >{
		return link(next: editingAccessoryView).then_QK { $0.value.editingAccessoryView = editingAccessoryView }
	}
    open func editingAccessoryView_qk_g() -> QKC<AA,YY,ZZ, UIView? >{
		 self +^ self.value.editingAccessoryView
	}

		// adjust content indent. default is 0
    open func indentationLevel_qk_s(_ indentationLevel:  Int ) -> QKC<AA,YY,ZZ, Int >{
		return link(next: indentationLevel).then_QK { $0.value.indentationLevel = indentationLevel }
	}
    open func indentationLevel_qk_g() -> QKC<AA,YY,ZZ, Int >{
		 self +^ self.value.indentationLevel
	}

		// width for each level. default is 10.0
    open func indentationWidth_qk_s(_ indentationWidth:  CGFloat ) -> QKC<AA,YY,ZZ, CGFloat >{
		return link(next: indentationWidth).then_QK { $0.value.indentationWidth = indentationWidth }
	}
    open func indentationWidth_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.indentationWidth
	}

		// allows customization of the separator frame
    @available(iOS 7.0, *)
    open func separatorInset_qk_s(_ separatorInset:  UIEdgeInsets ) -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		return link(next: separatorInset).then_QK { $0.value.separatorInset = separatorInset }
	}
    @available(iOS 7.0, *)
    open func separatorInset_qk_g() -> QKC<AA,YY,ZZ, UIEdgeInsets >{
		 self +^ self.value.separatorInset
	}

		// show appropriate edit controls (+/- & reorder). By default -setEditing: calls setEditing:animated: with NO for animated.
    open func isEditing_qk_s(_ isEditing:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: isEditing).then_QK { $0.value.isEditing = isEditing }
	}
    open func isEditing_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isEditing
	}

		// currently showing "Delete" button
    open func showingDeleteConfirmation_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.showingDeleteConfirmation
	}

    @available(iOS 9.0, *)
    open func focusStyle_qk_s(_ focusStyle:  UITableViewCell.FocusStyle) -> QKC<AA,YY,ZZ, UITableViewCell.FocusStyle>{
		return link(next: focusStyle).then_QK { $0.value.focusStyle = focusStyle }
	}
    @available(iOS 9.0, *)
    open func focusStyle_qk_g() -> QKC<AA,YY,ZZ, UITableViewCell.FocusStyle>{
		 self +^ self.value.focusStyle
	}

    @available(iOS 11.0, *)
    open func userInteractionEnabledWhileDragging_qk_s(_ userInteractionEnabledWhileDragging:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: userInteractionEnabledWhileDragging).then_QK { $0.value.userInteractionEnabledWhileDragging = userInteractionEnabledWhileDragging }
	}
    @available(iOS 11.0, *)
    open func userInteractionEnabledWhileDragging_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.userInteractionEnabledWhileDragging
	}

		// if the cell is reusable (has a reuse identifier), this is called just before the cell is returned from the table view method dequeueReusableCellWithIdentifier:.  If you override, you MUST call super.
    open func prepareForReuse_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.prepareForReuse()
	}

		// animate between regular and selected state
    open func setSelected_qk_f(_ selected: Bool, animated: Bool) -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.setSelected(selected, animated:animated) +^ selected
	}

		// animate between regular and highlighted state
    open func setHighlighted_qk_f(_ highlighted: Bool, animated: Bool) -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.setHighlighted(highlighted, animated:animated) +^ highlighted
	}

    open func setEditing_qk_f(_ editing: Bool, animated: Bool) -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.setEditing(editing, animated:animated) +^ editing
	}

	// but the UITableViewCellStateShowingEditControlMask will not be set.
    @available(iOS 3.0, *)
    open func willTransition_qk_f(to state: UITableViewCell.StateMask) -> QKC<AA,YY,ZZ, UITableViewCell.StateMask>{
		 self +^ self.value.willTransition(to:state) +^ state
	}

    @available(iOS 3.0, *)
    open func didTransition_qk_f(to state: UITableViewCell.StateMask) -> QKC<AA,YY,ZZ, UITableViewCell.StateMask>{
		 self +^ self.value.didTransition(to:state) +^ state
	}

    @available(iOS 11.0, *)
    open func dragStateDidChange_qk_f(_ dragState: UITableViewCell.DragState) -> QKC<AA,YY,ZZ, UITableViewCell.DragState>{
		 self +^ self.value.dragStateDidChange(dragState) +^ dragState
	}

}

